/**
 * Dart 函数 - 闭包
 * 1. Dart中闭包的实现与js中完全一致
 * 2. 使用时机: 即能重用变量， 又保护变量不被污染
 * 3. 实现原理: 外层函数被调用后,外层函数的作用域对象被内存函数应用着，导致外层函数的作用域对象无法释放，从而形成闭包；
 */
void main() {
  // 闭包
  fun1() {
    num mony = 5000;
    return (double pic) {
      mony -= pic;
      return mony;
    };
  }

  var p = fun1();
  print(p(10));
  print(p(10));
  print(p(10));
  print(p(10));
  print(p(10));
  // print(mony);// 不能直接访问fun1作用域中的值
}
